//    |  /           |
//    ' /   __| _` | __|  _ \   __|
//    . \  |   (   | |   (   |\__ `
//   _|\_\_|  \__,_|\__|\___/ ____/
//                   Multi-Physics
//
//  License:         BSD License
//                   Kratos default license: kratos/license.txt
//


// Project includes
#include "integration_point_utilities.h"


namespace Kratos
{
    void IntegrationPointUtilities::CreateIntegrationPoints1D(
        IntegrationPointsArrayType& rIntegrationPoints,
        const std::vector<double>& rSpansLocalSpace,
        const IntegrationInfo& rIntegrationInfo)
    {
        if (rIntegrationInfo.GetQuadratureMethod(0) == IntegrationInfo::QuadratureMethod::GAUSS) {
            IntegrationPointUtilities::CreateIntegrationPoints1DGauss(
                rIntegrationPoints, rSpansLocalSpace, rIntegrationInfo.GetNumberOfIntegrationPointsPerSpan(0));
        } else if (rIntegrationInfo.GetQuadratureMethod(0) == IntegrationInfo::QuadratureMethod::GRID) {
            IntegrationPointUtilities::CreateIntegrationPoints1DGrid(
                rIntegrationPoints, rSpansLocalSpace, rIntegrationInfo.GetNumberOfIntegrationPointsPerSpan(0));
        }
        else {
            KRATOS_ERROR << "Integration with given quadrature method not implemented for 1d structures. "
                << "Additional provided information: - rSpansLocalSpace: " << rSpansLocalSpace << std::endl;
        }
    }

    /* @brief Creates integration points within provided spans according
     *        to the provided points per span.
     * @param rIntegrationPoints result integration points.
     * @param rSpansLocalSpace spans in which integration points are generated.
     * @param IntegrationPointsPerSpan number of integration points per span.
     */
    void IntegrationPointUtilities::CreateIntegrationPoints1DGauss(
        IntegrationPointsArrayType& rIntegrationPoints,
        const std::vector<double>& rSpansLocalSpace,
        const SizeType IntegrationPointsPerSpan)
    {
        const SizeType num_spans = rSpansLocalSpace.size() - 1;
        const SizeType number_of_integration_points = num_spans * IntegrationPointsPerSpan;

        if (rIntegrationPoints.size() != number_of_integration_points)
            rIntegrationPoints.resize(number_of_integration_points);

        auto integration_point_iterator = rIntegrationPoints.begin();
        for (IndexType i = 0; i < num_spans; ++i)
        {
            IntegrationPointUtilities::IntegrationPoints1D(
                integration_point_iterator,
                IntegrationPointsPerSpan,
                rSpansLocalSpace[i], rSpansLocalSpace[i + 1]);
        }
    }

    /* @brief Creates integration points within provided spans according
     *        to the provided points per span.
     * @param rIntegrationPoints result integration points.
     * @param rSpansLocalSpace spans in which integration points are generated.
     * @param IntegrationPointsPerSpan number of integration points per span.
     */
    void IntegrationPointUtilities::CreateIntegrationPoints1DGrid(
        IntegrationPointsArrayType& rIntegrationPoints,
        const std::vector<double>& rSpansLocalSpace,
        const SizeType IntegrationPointsPerSpan)
    {
        const SizeType num_spans = rSpansLocalSpace.size() - 1;
        const SizeType number_of_integration_points = num_spans * IntegrationPointsPerSpan + num_spans + 1;

        if (rIntegrationPoints.size() != number_of_integration_points)
            rIntegrationPoints.resize(number_of_integration_points);

        IndexType counter = 0;
        double last_weight = 0.0;
        for (IndexType i = 0; i < num_spans; ++i)
        {
            const double increment = (rSpansLocalSpace[i + 1] - rSpansLocalSpace[i]) / (IntegrationPointsPerSpan + 1);
            const double weight = std::abs(increment);
            rIntegrationPoints[counter].X() = rSpansLocalSpace[i];
            rIntegrationPoints[counter].Weight() = (weight / 2) + (last_weight / 2);
            counter++;

            for (IndexType j = 1; j < IntegrationPointsPerSpan + 1; ++j)
            {
                rIntegrationPoints[counter].X() = rSpansLocalSpace[i] + j * increment;
                rIntegrationPoints[counter].Weight() = weight;
                counter++;
            }
            last_weight = weight;
        }
        rIntegrationPoints[counter].X() = rSpansLocalSpace[rSpansLocalSpace.size() - 1];
        rIntegrationPoints[counter].Weight() = (last_weight / 2);
    }

    void IntegrationPointUtilities::IntegrationPoints1D(
        typename IntegrationPointsArrayType::iterator& rIntegrationPointsBegin,
        SizeType PointsInU,
        double U0, double U1)
    {
        KRATOS_DEBUG_ERROR_IF(PointsInU < 1)
            << "PointsInU need to be bigger than 0, but is: " << PointsInU << std::endl;

        const double distance_u = U1 - U0;
        const double length_u = std::abs(U1 - U0);

        const std::vector<std::array<double, 2>>& integration_point_list_u = IntegrationPointUtilities::s_gauss_legendre[PointsInU - 1];

        for (SizeType u = 0; u < PointsInU; ++u)
        {
            (*rIntegrationPointsBegin)[0] = U0 + distance_u * integration_point_list_u[u][0];
            (*rIntegrationPointsBegin).Weight() =
                integration_point_list_u[u][1] * length_u;

            rIntegrationPointsBegin++;
        }
    }

    void IntegrationPointUtilities::IntegrationPoints2D(
        typename IntegrationPointsArrayType::iterator& rIntegrationPointsBegin,
        SizeType PointsInU, SizeType PointsInV,
        double U0, double U1, double V0, double V1)
    {
        KRATOS_DEBUG_ERROR_IF(PointsInU < 1 || PointsInV < 1)
            << "PointsInU and ~V need to be bigger than 0, but are PointsInU:"
            << PointsInU << " and PointsInV: " << PointsInV << std::endl;

        const double distance_u = U1 - U0;
        const double length_u = std::abs(U1 - U0);
        const double distance_v = V1 - V0;
        const double length_v = std::abs(V1 - V0);

        const std::vector<std::array<double, 2>>& integration_point_list_u = IntegrationPointUtilities::s_gauss_legendre[PointsInU - 1];
        const std::vector<std::array<double, 2>>& integration_point_list_v = IntegrationPointUtilities::s_gauss_legendre[PointsInV - 1];

        for (SizeType u = 0; u < PointsInU; ++u)
        {
            for (SizeType v = 0; v < PointsInV; ++v)
            {
                (*rIntegrationPointsBegin)[0] = U0 + distance_u * integration_point_list_u[u][0];
                (*rIntegrationPointsBegin)[1] = V0 + distance_v * integration_point_list_v[v][0];
                (*rIntegrationPointsBegin).Weight() =
                    integration_point_list_u[u][1] * length_u *
                    integration_point_list_v[v][1] * length_v;

                rIntegrationPointsBegin++;
            }
        }
    }

    void IntegrationPointUtilities::IntegrationPoints3D(
        typename IntegrationPointsArrayType::iterator& rIntegrationPointsBegin,
        SizeType PointsInU, SizeType PointsInV, SizeType PointsInW,
        double U0, double U1, double V0, double V1, double W0, double W1)
    {
        KRATOS_DEBUG_ERROR_IF(PointsInU < 1 || PointsInV < 1 || PointsInW < 1)
            << "PointsInU, -V and -W need to be bigger than 0 - PointsInU:"
            << PointsInU << ", PointsInV:" << PointsInV << " and PointsInW:" << PointsInW << std::endl;

        const double distance_u = U1 - U0;
        const double length_u = std::abs(U1 - U0);
        const double distance_v = V1 - V0;
        const double length_v = std::abs(V1 - V0);
        const double distance_w = W1 - W0;
        const double length_w = std::abs(W1 - W0);

        const std::vector<std::array<double, 2>>& integration_point_list_u = IntegrationPointUtilities::s_gauss_legendre[PointsInU - 1];
        const std::vector<std::array<double, 2>>& integration_point_list_v = IntegrationPointUtilities::s_gauss_legendre[PointsInV - 1];
        const std::vector<std::array<double, 2>>& integration_point_list_w = IntegrationPointUtilities::s_gauss_legendre[PointsInW - 1];

        for (SizeType u = 0; u < PointsInU; ++u) {
            for (SizeType v = 0; v < PointsInV; ++v) {
                for( SizeType w = 0; w < PointsInW; ++w) {
                    (*rIntegrationPointsBegin)[0] = U0 + distance_u * integration_point_list_u[u][0];
                    (*rIntegrationPointsBegin)[1] = V0 + distance_v * integration_point_list_v[v][0];
                    (*rIntegrationPointsBegin)[2] = W0 + distance_w * integration_point_list_w[w][0];
                    (*rIntegrationPointsBegin).Weight() =
                        integration_point_list_u[u][1] * length_u *
                        integration_point_list_v[v][1] * length_v *
                        integration_point_list_w[w][1] * length_w;

                    rIntegrationPointsBegin++;
                }
            }
        }
    }

    void IntegrationPointUtilities::IntegrationPointsTriangle2D(
        typename IntegrationPointsArrayType::iterator& rIntegrationPointsBegin,
        SizeType PointsIndex,
        double U0, double U1, double U2, double V0, double V1, double V2)
    {
        KRATOS_DEBUG_ERROR_IF(PointsIndex < 1)
            << "PointsIndex need to be bigger than 0, but is: " << PointsIndex << std::endl;

        const double area = (U0 * (V1 - V2) + U1 * (V2 - V0) + U2 * (V0 - V1)) / 2;

        const std::vector<std::array<double, 3>>& integration_point_list = IntegrationPointUtilities::s_gauss_triangle[PointsIndex];

        for (SizeType i = 0; i < integration_point_list.size(); i++)
        {
            const double a = 1 - integration_point_list[i][0] - integration_point_list[i][1];

            (*rIntegrationPointsBegin)[0] = U0 * a + U1 * integration_point_list[i][0] + U2 * integration_point_list[i][1];
            (*rIntegrationPointsBegin)[1] = V0 * a + V1 * integration_point_list[i][0] + V2 * integration_point_list[i][1];
            (*rIntegrationPointsBegin).Weight() = area * integration_point_list[i][2];

            rIntegrationPointsBegin++;
        }
    }

    const std::vector<std::vector<std::array<double, 2>>> IntegrationPointUtilities::s_gauss_legendre = {
    {   // degree 1
        { 0.5000000000000000000, 1.0000000000000000000 }
    },
    {   // degree 2
        { 0.2113248654051871300, 0.5000000000000000000 },
        { 0.7886751345948129000, 0.5000000000000000000 }
    },
    {   // degree 3
        { 0.1127016653792583000, 0.2777777777777778500 },
        { 0.5000000000000000000, 0.4444444444444444000 },
        { 0.8872983346207417000, 0.2777777777777778500 }
    },
    {   // degree 4
        { 0.0694318442029737100, 0.1739274225687268400 },
        { 0.3300094782075718700, 0.3260725774312731000 },
        { 0.6699905217924281000, 0.3260725774312731000 },
        { 0.9305681557970262000, 0.1739274225687268400 }
    },
    {   // degree 5
        { 0.0469100770306680200, 0.1184634425280947100 },
        { 0.2307653449471584500, 0.2393143352496831000 },
        { 0.5000000000000000000, 0.2844444444444445000 },
        { 0.7692346550528415000, 0.2393143352496831000 },
        { 0.9530899229693319000, 0.1184634425280947100 }
    },
    {   // degree 6
        { 0.0337652428984239750, 0.0856622461895848700 },
        { 0.1693953067668677600, 0.1803807865240694700 },
        { 0.3806904069584015000, 0.2339569672863456900 },
        { 0.6193095930415985000, 0.2339569672863456900 },
        { 0.8306046932331322000, 0.1803807865240694700 },
        { 0.9662347571015760000, 0.0856622461895848700 }
    },
    {   // degree 7
        { 0.0254460438286207570, 0.0647424830844353200 },
        { 0.1292344072003027700, 0.1398526957446383000 },
        { 0.2970774243113014000, 0.1909150252525591600 },
        { 0.5000000000000000000, 0.2089795918367344800 },
        { 0.7029225756886985000, 0.1909150252525591600 },
        { 0.8707655927996972000, 0.1398526957446383000 },
        { 0.9745539561713792000, 0.0647424830844353200 }
    },
    {   // degree 8
        { 0.0198550717512319120, 0.0506142681451883440 },
        { 0.1016667612931866400, 0.1111905172266871700 },
        { 0.2372337950418355000, 0.1568533229389435200 },
        { 0.4082826787521751000, 0.1813418916891808800 },
        { 0.5917173212478248000, 0.1813418916891808800 },
        { 0.7627662049581645000, 0.1568533229389435200 },
        { 0.8983332387068134000, 0.1111905172266871700 },
        { 0.9801449282487681000, 0.0506142681451883440 }
    },
    {   // degree 9
        { 0.0159198802461869570, 0.0406371941807873600 },
        { 0.0819844463366821200, 0.0903240803474285600 },
        { 0.1933142836497048200, 0.1303053482014678300 },
        { 0.3378732882980955400, 0.1561735385200014000 },
        { 0.5000000000000000000, 0.1651196775006298400 },
        { 0.6621267117019045000, 0.1561735385200014000 },
        { 0.8066857163502952000, 0.1303053482014678300 },
        { 0.9180155536633179000, 0.0903240803474285600 },
        { 0.9840801197538130000, 0.0406371941807873600 }
    },
    {   // degree 10
        { 0.0130467357414141280, 0.0333356721543440340 },
        { 0.0674683166555077300, 0.0747256745752901800 },
        { 0.1602952158504877800, 0.1095431812579910000 },
        { 0.2833023029353764000, 0.1346333596549982600 },
        { 0.4255628305091844000, 0.1477621123573765000 },
        { 0.5744371694908156000, 0.1477621123573765000 },
        { 0.7166976970646236000, 0.1346333596549982600 },
        { 0.8397047841495122000, 0.1095431812579910000 },
        { 0.9325316833444923000, 0.0747256745752901800 },
        { 0.9869532642585859000, 0.0333356721543440340 }
    },
    {   // degree 11
        { 0.0108856709269715140, 0.0278342835580865820 },
        { 0.0564687001159523400, 0.0627901847324523500 },
        { 0.1349239972129753200, 0.0931451054638672100 },
        { 0.2404519353965941000, 0.1165968822959953400 },
        { 0.3652284220238275500, 0.1314022722551233800 },
        { 0.5000000000000000000, 0.1364625433889504500 },
        { 0.6347715779761725000, 0.1314022722551233800 },
        { 0.7595480646034058000, 0.1165968822959953400 },
        { 0.8650760027870247000, 0.0931451054638672100 },
        { 0.9435312998840477000, 0.0627901847324523500 },
        { 0.9891143290730284000, 0.0278342835580865820 }
    },
    {   // degree 12
        { 0.0092196828766403780, 0.0235876681932560100 },
        { 0.0479413718147626000, 0.0534696629976594400 },
        { 0.1150486629028476500, 0.0800391642716730600 },
        { 0.2063410228566912600, 0.1015837133615328200 },
        { 0.3160842505009099400, 0.1167462682691773200 },
        { 0.4373832957442655400, 0.1245735229067013400 },
        { 0.5626167042557344000, 0.1245735229067013400 },
        { 0.6839157494990901000, 0.1167462682691773200 },
        { 0.7936589771433087000, 0.1015837133615328200 },
        { 0.8849513370971523000, 0.0800391642716730600 },
        { 0.9520586281852375000, 0.0534696629976594400 },
        { 0.9907803171233596000, 0.0235876681932560100 }
    },
    {   // degree 13
        { 0.0079084726407059320, 0.0202420023826579400 },
        { 0.0412008003885110400, 0.0460607499188643000 },
        { 0.0992109546333450600, 0.0694367551098936800 },
        { 0.1788253302798298900, 0.0890729903809727600 },
        { 0.2757536244817766000, 0.1039080237684442800 },
        { 0.3847708420224326000, 0.1131415901314485700 },
        { 0.5000000000000000000, 0.1162757766154369500 },
        { 0.6152291579775674000, 0.1131415901314485700 },
        { 0.7242463755182234000, 0.1039080237684442800 },
        { 0.8211746697201701000, 0.0890729903809727600 },
        { 0.9007890453666549000, 0.0694367551098936800 },
        { 0.9587991996114890000, 0.0460607499188643000 },
        { 0.9920915273592941000, 0.0202420023826579400 }
    },
    {   // degree 14
        { 0.0068580956515938430, 0.0175597301658761870 },
        { 0.0357825581682132400, 0.0400790435798801500 },
        { 0.0863993424651174900, 0.0607592853439514800 },
        { 0.1563535475941572600, 0.0786015835790967000 },
        { 0.2423756818209229500, 0.0927691987389688100 },
        { 0.3404438155360551000, 0.1025992318606477700 },
        { 0.4459725256463281700, 0.1076319267315788300 },
        { 0.5540274743536718000, 0.1076319267315788300 },
        { 0.6595561844639448000, 0.1025992318606477700 },
        { 0.7576243181790770000, 0.0927691987389688100 },
        { 0.8436464524058427000, 0.0786015835790967000 },
        { 0.9136006575348825000, 0.0607592853439514800 },
        { 0.9642174418317868000, 0.0400790435798801500 },
        { 0.9931419043484062000, 0.0175597301658761870 }
    },
    {   // degree 15
        { 0.0060037409897573110, 0.0153766209980593230 },
        { 0.0313633037996470240, 0.0351830237440540340 },
        { 0.0758967082947864000, 0.0535796102335858860 },
        { 0.1377911343199149700, 0.0697853389630769500 },
        { 0.2145139136957305800, 0.0831346029084968900 },
        { 0.3029243264612183000, 0.0930805000077809400 },
        { 0.3994029530012827600, 0.0992157426635556200 },
        { 0.5000000000000000000, 0.1012891209627804500 },
        { 0.6005970469987173000, 0.0992157426635556200 },
        { 0.6970756735387817000, 0.0930805000077809400 },
        { 0.7854860863042694000, 0.0831346029084968900 },
        { 0.8622088656800850000, 0.0697853389630769500 },
        { 0.9241032917052137000, 0.0535796102335858860 },
        { 0.9686366962003530000, 0.0351830237440540340 },
        { 0.9939962590102427000, 0.0153766209980593230 }
    },
    {   // degree 16
        { 0.0052995325041750310, 0.0135762297058770190 },
        { 0.0277124884633837000, 0.0311267619693238530 },
        { 0.0671843988060841200, 0.0475792558412462960 },
        { 0.1222977958224985000, 0.0623144856277670150 },
        { 0.1910618777986781100, 0.0747979944082883800 },
        { 0.2709916111713863000, 0.0845782596975013100 },
        { 0.3591982246103705400, 0.0913017075224618000 },
        { 0.4524937450811813000, 0.0947253052275342900 },
        { 0.5475062549188188000, 0.0947253052275342900 },
        { 0.6408017753896295000, 0.0913017075224618000 },
        { 0.7290083888286136000, 0.0845782596975013100 },
        { 0.8089381222013219000, 0.0747979944082883800 },
        { 0.8777022041775016000, 0.0623144856277670150 },
        { 0.9328156011939159000, 0.0475792558412462960 },
        { 0.9722875115366163000, 0.0311267619693238530 },
        { 0.9947004674958250000, 0.0135762297058770190 }
    },
    {   // degree 17
        { 0.0047122623427913180, 0.0120741514342747600 },
        { 0.0246622391156161020, 0.0277297646869933000 },
        { 0.0598804231365070440, 0.0425180741585895400 },
        { 0.1092429980515993200, 0.0559419235967018240 },
        { 0.1711644203916545800, 0.0675681842342626100 },
        { 0.2436547314567615300, 0.0770228805384050600 },
        { 0.3243841182730618500, 0.0840020510782249800 },
        { 0.4107579092520760600, 0.0882813526834962700 },
        { 0.5000000000000000000, 0.0897232351781032700 },
        { 0.5892420907479239000, 0.0882813526834962700 },
        { 0.6756158817269382000, 0.0840020510782249800 },
        { 0.7563452685432385000, 0.0770228805384050600 },
        { 0.8288355796083454000, 0.0675681842342626100 },
        { 0.8907570019484007000, 0.0559419235967018240 },
        { 0.9401195768634929000, 0.0425180741585895400 },
        { 0.9753377608843838000, 0.0277297646869933000 },
        { 0.9952877376572087000, 0.0120741514342747600 }
    },
    {   // degree 18
        { 0.0042174157895345510, 0.0108080067632420650 },
        { 0.0220880252143010880, 0.0248572744474846100 },
        { 0.0536987667512221500, 0.0382128651274446200 },
        { 0.0981475205137384300, 0.0504710220531434940 },
        { 0.1541564784698234000, 0.0612776033557391800 },
        { 0.2201145844630262300, 0.0703214573353253100 },
        { 0.2941244192685787000, 0.0773423375631326100 },
        { 0.3740568871542472300, 0.0821382418729163600 },
        { 0.4576124934791323500, 0.0845711914815718100 },
        { 0.5423875065208676000, 0.0845711914815718100 },
        { 0.6259431128457528000, 0.0821382418729163600 },
        { 0.7058755807314213000, 0.0773423375631326100 },
        { 0.7798854155369738000, 0.0703214573353253100 },
        { 0.8458435215301766000, 0.0612776033557391800 },
        { 0.9018524794862616000, 0.0504710220531434940 },
        { 0.9463012332487779000, 0.0382128651274446200 },
        { 0.9779119747856989000, 0.0248572744474846100 },
        { 0.9957825842104655000, 0.0108080067632420650 }
    },
    {   // degree 19
        { 0.0037965780782078240, 0.0097308941148638050 },
        { 0.0198959239325849900, 0.0224071133828499040 },
        { 0.0484220481925910500, 0.0345222713688205400 },
        { 0.0886426717314285900, 0.0457450108112249200 },
        { 0.1395169113323853000, 0.0557833227736668800 },
        { 0.1997273476691595000, 0.0643769812696681000 },
        { 0.2677146293120195000, 0.0713033510868031900 },
        { 0.3417179500181850600, 0.0763830210329297200 },
        { 0.4198206771798873000, 0.0794844216969770700 },
        { 0.5000000000000000000, 0.0805272249243917200 },
        { 0.5801793228201126000, 0.0794844216969770700 },
        { 0.6582820499818149000, 0.0763830210329297200 },
        { 0.7322853706879805000, 0.0713033510868031900 },
        { 0.8002726523308406000, 0.0643769812696681000 },
        { 0.8604830886676147000, 0.0557833227736668800 },
        { 0.9113573282685714000, 0.0457450108112249200 },
        { 0.9515779518074090000, 0.0345222713688205400 },
        { 0.9801040760674150000, 0.0224071133828499040 },
        { 0.9962034219217921000, 0.0097308941148638050 }
    },
    {   // degree 20
        { 0.0034357004074525577, 0.0088070035695766370 },
        { 0.0180140363610430950, 0.0203007149001931100 },
        { 0.0438827858743370800, 0.0313360241670547200 },
        { 0.0804415140888906100, 0.0416383707883523360 },
        { 0.1268340467699246000, 0.0509650599086201300 },
        { 0.1819731596367425000, 0.0590972659807591200 },
        { 0.2445664990245864400, 0.0658443192245882600 },
        { 0.3131469556422902000, 0.0710480546591909400 },
        { 0.3861070744291774700, 0.0745864932363018300 },
        { 0.4617367394332513300, 0.0763766935653628900 },
        { 0.5382632605667487000, 0.0763766935653628900 },
        { 0.6138929255708225000, 0.0745864932363018300 },
        { 0.6868530443577098000, 0.0710480546591909400 },
        { 0.7554335009754136000, 0.0658443192245882600 },
        { 0.8180268403632576000, 0.0590972659807591200 },
        { 0.8731659532300754000, 0.0509650599086201300 },
        { 0.9195584859111094000, 0.0416383707883523360 },
        { 0.9561172141256629000, 0.0313360241670547200 },
        { 0.9819859636389570000, 0.0203007149001931100 },
        { 0.9965642995925474000, 0.0088070035695766370 }
    },
    {   // degree 21
        { 0.0031239146898052740, 0.0080086141288870680 },
        { 0.0163865807168468440, 0.0184768948854264600 },
        { 0.0399503329247996000, 0.0285672127134285780 },
        { 0.0733183177083413500, 0.0380500568141896700 },
        { 0.1157800182621610600, 0.0467222117280169100 },
        { 0.1664305979012938300, 0.0543986495835741550 },
        { 0.2241905820563901000, 0.0609157080268642100 },
        { 0.2878289398962806000, 0.0661344693166686900 },
        { 0.3559893415987994700, 0.0699436973955365600 },
        { 0.4272190729195524700, 0.0722622019949850400 },
        { 0.5000000000000000000, 0.0730405668248452300 },
        { 0.5727809270804476000, 0.0722622019949850400 },
        { 0.6440106584012005000, 0.0699436973955365600 },
        { 0.7121710601037194000, 0.0661344693166686900 },
        { 0.7758094179436099000, 0.0609157080268642100 },
        { 0.8335694020987061000, 0.0543986495835741550 },
        { 0.8842199817378389000, 0.0467222117280169100 },
        { 0.9266816822916586000, 0.0380500568141896700 },
        { 0.9600496670752003000, 0.0285672127134285780 },
        { 0.9836134192831532000, 0.0184768948854264600 },
        { 0.9968760853101948000, 0.0080086141288870680 }
    },
    {   // degree 22
        { 0.0028527072588003800, 0.0073139976491373520 },
        { 0.0149697510822856540, 0.0168874507924075900 },
        { 0.0365216139064130100, 0.0261466675763414350 },
        { 0.0670937111398499100, 0.0348982342122601000 },
        { 0.1060915970103959400, 0.0429708031085337000 },
        { 0.1527563684066586300, 0.0502070722214403600 },
        { 0.2061797982465442000, 0.0564661480402694140 },
        { 0.2653220810066214700, 0.0616261884052559940 },
        { 0.3290320895539579000, 0.0655867523935309400 },
        { 0.3960697866558893000, 0.0682707491730073900 },
        { 0.4651303633401389000, 0.0696259364278157800 },
        { 0.5348696366598611000, 0.0696259364278157800 },
        { 0.6039302133441107000, 0.0682707491730073900 },
        { 0.6709679104460421000, 0.0655867523935309400 },
        { 0.7346779189933785000, 0.0616261884052559940 },
        { 0.7938202017534558000, 0.0564661480402694140 },
        { 0.8472436315933414000, 0.0502070722214403600 },
        { 0.8939084029896041000, 0.0429708031085337000 },
        { 0.9329062888601500000, 0.0348982342122601000 },
        { 0.9634783860935869000, 0.0261466675763414350 },
        { 0.9850302489177143000, 0.0168874507924075900 },
        { 0.9971472927411996000, 0.0073139976491373520 }
    },
    {   // degree 23
        { 0.0026153325012239215, 0.0067059297435709230 },
        { 0.0137287643909423940, 0.0154940029284897480 },
        { 0.0335144565869919250, 0.0240188358655424730 },
        { 0.0616238208647791900, 0.0321162107042630300 },
        { 0.0975557991905800500, 0.0396407058883594300 },
        { 0.1406693184340249100, 0.0464578830300176200 },
        { 0.1901950621181769400, 0.0524460457322706900 },
        { 0.2452492610769962400, 0.0574983201112056500 },
        { 0.3048494809848546000, 0.0615245421533647250 },
        { 0.3679321595148275000, 0.0644528610940410000 },
        { 0.4333715878507669600, 0.0662310197023482100 },
        { 0.5000000000000000000, 0.0668272860930529700 },
        { 0.5666284121492331000, 0.0662310197023482100 },
        { 0.6320678404851725000, 0.0644528610940410000 },
        { 0.6951505190151455000, 0.0615245421533647250 },
        { 0.7547507389230037000, 0.0574983201112056500 },
        { 0.8098049378818231000, 0.0524460457322706900 },
        { 0.8593306815659751000, 0.0464578830300176200 },
        { 0.9024442008094200000, 0.0396407058883594300 },
        { 0.9383761791352208000, 0.0321162107042630300 },
        { 0.9664855434130081000, 0.0240188358655424730 },
        { 0.9862712356090576000, 0.0154940029284897480 },
        { 0.9973846674987761000, 0.0067059297435709230 }
    },
    {   // degree 24
        { 0.0024063900014893447, 0.0061706148999935454 },
        { 0.0126357220143452630, 0.0142656943144668720 },
        { 0.0308627239986336000, 0.0221387194087097760 },
        { 0.0567922364977995200, 0.0296492924577183700 },
        { 0.0899990070130485300, 0.0366732407055402050 },
        { 0.1299379042107228200, 0.0430950807659766440 },
        { 0.1759531740315122300, 0.0488093260520570300 },
        { 0.2272892643055802200, 0.0537221350579828000 },
        { 0.2831032461869774600, 0.0577528340268628100 },
        { 0.3424786601519183000, 0.0608352364639017100 },
        { 0.4044405662631918600, 0.0629187281734141500 },
        { 0.4679715535686972000, 0.0639690976733761100 },
        { 0.5320284464313028000, 0.0639690976733761100 },
        { 0.5955594337368082000, 0.0629187281734141500 },
        { 0.6575213398480817000, 0.0608352364639017100 },
        { 0.7168967538130225000, 0.0577528340268628100 },
        { 0.7727107356944198000, 0.0537221350579828000 },
        { 0.8240468259684878000, 0.0488093260520570300 },
        { 0.8700620957892772000, 0.0430950807659766440 },
        { 0.9100009929869515000, 0.0366732407055402050 },
        { 0.9432077635022005000, 0.0296492924577183700 },
        { 0.9691372760013663000, 0.0221387194087097760 },
        { 0.9873642779856547000, 0.0142656943144668720 },
        { 0.9975936099985107000, 0.0061706148999935454 }
    },
    {   // degree 25
        { 0.0022215151047509930, 0.0056968992505137960 },
        { 0.0116680392702412370, 0.0131774933075159540 },
        { 0.0285127143855128400, 0.0204695783506532500 },
        { 0.0525040010608623400, 0.0274523479879177200 },
        { 0.0832786856195830100, 0.0340191669061785040 },
        { 0.1203703684813212100, 0.0400703501675004900 },
        { 0.1632168157632658000, 0.0455141309914816900 },
        { 0.2111685348793885300, 0.0502679745335252450 },
        { 0.2634986342771425000, 0.0542598122371317200 },
        { 0.3194138470953060700, 0.0574291295728557300 },
        { 0.3780665581395058000, 0.0597278817678922500 },
        { 0.4385676536946448000, 0.0611212214951549340 },
        { 0.5000000000000000000, 0.0615880268633576200 },
        { 0.5614323463053552000, 0.0611212214951549340 },
        { 0.6219334418604943000, 0.0597278817678922500 },
        { 0.6805861529046939000, 0.0574291295728557300 },
        { 0.7365013657228575000, 0.0542598122371317200 },
        { 0.7888314651206114000, 0.0502679745335252450 },
        { 0.8367831842367341000, 0.0455141309914816900 },
        { 0.8796296315186788000, 0.0400703501675004900 },
        { 0.9167213143804169000, 0.0340191669061785040 },
        { 0.9474959989391376000, 0.0274523479879177200 },
        { 0.9714872856144872000, 0.0204695783506532500 },
        { 0.9883319607297587000, 0.0131774933075159540 },
        { 0.9977784848952490000, 0.0056968992505137960 }
    },
    {   // degree 26
        { 0.0020571494271915403, 0.0052756863086716975 },
        { 0.0108072770217645390, 0.0122089255463159690 },
        { 0.0264204666691428840, 0.0189811916471815600 },
        { 0.0486810690078464700, 0.0254879126485740400 },
        { 0.0772770286057509700, 0.0316370231647873400 },
        { 0.1118070255896606000, 0.0373420748828298800 },
        { 0.1517863697900213600, 0.0425229471567425340 },
        { 0.1966538534911909700, 0.0471069001779570800 },
        { 0.2457796425877471500, 0.0510295805472126600 },
        { 0.2984741224382569000, 0.0542359202642882400 },
        { 0.3539975802570215500, 0.0566809082731597800 },
        { 0.4115705898215549000, 0.0583302217426482300 },
        { 0.4703849532853434000, 0.0591607076396310600 },
        { 0.5296150467146566000, 0.0591607076396310600 },
        { 0.5884294101784451000, 0.0583302217426482300 },
        { 0.6460024197429785000, 0.0566809082731597800 },
        { 0.7015258775617431000, 0.0542359202642882400 },
        { 0.7542203574122528000, 0.0510295805472126600 },
        { 0.8033461465088090000, 0.0471069001779570800 },
        { 0.8482136302099786000, 0.0425229471567425340 },
        { 0.8881929744103394000, 0.0373420748828298800 },
        { 0.9227229713942491000, 0.0316370231647873400 },
        { 0.9513189309921535000, 0.0254879126485740400 },
        { 0.9735795333308571000, 0.0189811916471815600 },
        { 0.9891927229782355000, 0.0122089255463159690 },
        { 0.9979428505728085000, 0.0052756863086716975 }
    },
    {   // degree 27
        { 0.0019103685555057481, 0.0048994980256471020 },
        { 0.0100382620192494000, 0.0113431157980904970 },
        { 0.0245497210926474700, 0.0176485268787095900 },
        { 0.0452588396612544350, 0.0237247062603076870 },
        { 0.0718960459908527500, 0.0294917684299168200 },
        { 0.1041141804647458500, 0.0348744118831228200 },
        { 0.1414932631302881500, 0.0398024338865289100 },
        { 0.1835460140267524000, 0.0442115792718784160 },
        { 0.2297242177102715200, 0.0480443636850142500 },
        { 0.2794258741249865400, 0.0512508189088729300 },
        { 0.3320030481807455500, 0.0537891428942665800 },
        { 0.3867703172802316000, 0.0556262441784225800 },
        { 0.4430137071952350300, 0.0567381730544826000 },
        { 0.5000000000000000000, 0.0571104336894785300 },
        { 0.5569862928047650000, 0.0567381730544826000 },
        { 0.6132296827197684000, 0.0556262441784225800 },
        { 0.6679969518192544000, 0.0537891428942665800 },
        { 0.7205741258750135000, 0.0512508189088729300 },
        { 0.7702757822897285000, 0.0480443636850142500 },
        { 0.8164539859732476000, 0.0442115792718784160 },
        { 0.8585067368697119000, 0.0398024338865289100 },
        { 0.8958858195352541000, 0.0348744118831228200 },
        { 0.9281039540091472000, 0.0294917684299168200 },
        { 0.9547411603387456000, 0.0237247062603076870 },
        { 0.9754502789073525000, 0.0176485268787095900 },
        { 0.9899617379807506000, 0.0113431157980904970 },
        { 0.9980896314444943000, 0.0048994980256471020 }
    },
    {   // degree 28
        { 0.0017787512130227890, 0.0045621412965471990 },
        { 0.0093484173145635950, 0.0105660562963856360 },
        { 0.0228703596855309170, 0.0164507138911522600 },
        { 0.0421834868039339700, 0.0221364673795019920 },
        { 0.0670537387128025100, 0.0275536728378584680 },
        { 0.0971793145414104300, 0.0326364619834998800 },
        { 0.1321945609931841000, 0.0373231071172844060 },
        { 0.1716744529805675000, 0.0415567086144504700 },
        { 0.2151397640942991400, 0.0452858721965164260 },
        { 0.2620628875224409000, 0.0484653289989649600 },
        { 0.3118742419554606500, 0.0510564837890303900 },
        { 0.3639691861824109000, 0.0530278829614231800 },
        { 0.4177153589333096000, 0.0543555961291470700 },
        { 0.4724603550579829000, 0.0550235065082376200 },
        { 0.5275396449420171000, 0.0550235065082376200 },
        { 0.5822846410666904000, 0.0543555961291470700 },
        { 0.6360308138175891000, 0.0530278829614231800 },
        { 0.6881257580445393000, 0.0510564837890303900 },
        { 0.7379371124775591000, 0.0484653289989649600 },
        { 0.7848602359057009000, 0.0452858721965164260 },
        { 0.8283255470194325000, 0.0415567086144504700 },
        { 0.8678054390068160000, 0.0373231071172844060 },
        { 0.9028206854585896000, 0.0326364619834998800 },
        { 0.9329462612871975000, 0.0275536728378584680 },
        { 0.9578165131960661000, 0.0221364673795019920 },
        { 0.9771296403144691000, 0.0164507138911522600 },
        { 0.9906515826854364000, 0.0105660562963856360 },
        { 0.9982212487869773000, 0.0045621412965471990 }
    },
    {   // degree 29
        { 0.0016602788697017146, 0.0042584519393736190 },
        { 0.0087272473692934230, 0.0098660425280616470 },
        { 0.0213572021109561530, 0.0153702461010466800 },
        { 0.0394098835234706350, 0.0207010312593413700 },
        { 0.0626810975399486000, 0.0257974134512488770 },
        { 0.0909072561923737800, 0.0306015453285395100 },
        { 0.1237685741327614300, 0.0350589666275255700 },
        { 0.1608927311986567700, 0.0391191635678818440 },
        { 0.2018591014308861000, 0.0427361286830862000 },
        { 0.2462035224378861800, 0.0458688785696293500 },
        { 0.2934235559129957000, 0.0484819170472042400 },
        { 0.3429841810661800000, 0.0505456368799574400 },
        { 0.3943238569169994500, 0.0520366550388646600 },
        { 0.4468608849336604000, 0.0529380775486603950 },
        { 0.5000000000000000000, 0.0532396908591570800 },
        { 0.5531391150663396000, 0.0529380775486603950 },
        { 0.6056761430830006000, 0.0520366550388646600 },
        { 0.6570158189338200000, 0.0505456368799574400 },
        { 0.7065764440870044000, 0.0484819170472042400 },
        { 0.7537964775621138000, 0.0458688785696293500 },
        { 0.7981408985691139000, 0.0427361286830862000 },
        { 0.8391072688013432000, 0.0391191635678818440 },
        { 0.8762314258672386000, 0.0350589666275255700 },
        { 0.9090927438076262000, 0.0306015453285395100 },
        { 0.9373189024600515000, 0.0257974134512488770 },
        { 0.9605901164765294000, 0.0207010312593413700 },
        { 0.9786427978890438000, 0.0153702461010466800 },
        { 0.9912727526307066000, 0.0098660425280616470 },
        { 0.9983397211302982000, 0.0042584519393736190 }
    },
    {   // degree 30
        { 0.0015532579626752474, 0.0039840962480847610 },
        { 0.0081659383601263570, 0.0092332341555455430 },
        { 0.0199890675158462260, 0.0143923539416614360 },
        { 0.0368999762853628450, 0.0193995962848133970 },
        { 0.0587197321039736900, 0.0242013364152972170 },
        { 0.0852171188086158200, 0.0287465781088095470 },
        { 0.1161112839475869100, 0.0329871149410901600 },
        { 0.1510747526033420800, 0.0368779873688524000 },
        { 0.1897369085053785500, 0.0403779476147099050 },
        { 0.2316879259289900700, 0.0434498936005413500 },
        { 0.2764831152309554000, 0.0460612611188928950 },
        { 0.3236476372345609000, 0.0481843685873219950 },
        { 0.3726815369160551000, 0.0497967102933974700 },
        { 0.4230650431957082600, 0.0508811948742026040 },
        { 0.4742640787223411600, 0.0514263264467792400 },
        { 0.5257359212776589000, 0.0514263264467792400 },
        { 0.5769349568042917000, 0.0508811948742026040 },
        { 0.6273184630839449000, 0.0497967102933974700 },
        { 0.6763523627654391000, 0.0481843685873219950 },
        { 0.7235168847690445000, 0.0460612611188928950 },
        { 0.7683120740710099000, 0.0434498936005413500 },
        { 0.8102630914946214000, 0.0403779476147099050 },
        { 0.8489252473966580000, 0.0368779873688524000 },
        { 0.8838887160524131000, 0.0329871149410901600 },
        { 0.9147828811913842000, 0.0287465781088095470 },
        { 0.9412802678960264000, 0.0242013364152972170 },
        { 0.9631000237146372000, 0.0193995962848133970 },
        { 0.9800109324841537000, 0.0143923539416614360 },
        { 0.9918340616398736000, 0.0092332341555455430 },
        { 0.9984467420373248000, 0.0039840962480847610 }
    },
    {   // degree 31
        { 0.0014562590902614803, 0.0037354157896252525 },
        { 0.0076570451674237705, 0.0086593103951556530 },
        { 0.0187480374535251570, 0.0135045095924893090 },
        { 0.0346215010516759400, 0.0182161369561929380 },
        { 0.0551199850258644600, 0.0227468537636004130 },
        { 0.0800398399268663100, 0.0270515412124582800 },
        { 0.1091334257916875500, 0.0310873932805142940 },
        { 0.1421116077065733300, 0.0348142916177050440 },
        { 0.1786466385378698300, 0.0381951932993882460 },
        { 0.2183754192964253400, 0.0411964958807945300 },
        { 0.2609031089775487600, 0.0437883703042388300 },
        { 0.3058070491958835300, 0.0459450569468206750 },
        { 0.3526409650091492000, 0.0476451214561596900 },
        { 0.4009394003322147000, 0.0488716676931642400 },
        { 0.4502223439238292600, 0.0496125056133360200 },
        { 0.5000000000000000000, 0.0498602723967131500 },
        { 0.5497776560761708000, 0.0496125056133360200 },
        { 0.5990605996677854000, 0.0488716676931642400 },
        { 0.6473590349908508000, 0.0476451214561596900 },
        { 0.6941929508041165000, 0.0459450569468206750 },
        { 0.7390968910224512000, 0.0437883703042388300 },
        { 0.7816245807035747000, 0.0411964958807945300 },
        { 0.8213533614621302000, 0.0381951932993882460 },
        { 0.8578883922934266000, 0.0348142916177050440 },
        { 0.8908665742083124000, 0.0310873932805142940 },
        { 0.9199601600731337000, 0.0270515412124582800 },
        { 0.9448800149741355000, 0.0227468537636004130 },
        { 0.9653784989483241000, 0.0182161369561929380 },
        { 0.9812519625464748000, 0.0135045095924893090 },
        { 0.9923429548325762000, 0.0086593103951556530 },
        { 0.9985437409097385000, 0.0037354157896252525 }
    },
    {   // degree 32
        { 0.0013680690752592150, 0.0035093050047346490 },
        { 0.0071942442273658090, 0.0081371973654529830 },
        { 0.0176188722062468050, 0.0126960326546312130 },
        { 0.0325469620311301700, 0.0171369314565108130 },
        { 0.0518394221169739000, 0.0214179490111132130 },
        { 0.0753161931337150100, 0.0254990296311881220 },
        { 0.1027581020160288100, 0.0293420467392678520 },
        { 0.1339089406298551400, 0.0329111113881808760 },
        { 0.1684778665348923800, 0.0361728970544242250 },
        { 0.2061421213796188500, 0.0390969478935351560 },
        { 0.2465500455338853200, 0.0416559621134734200 },
        { 0.2893243619346823600, 0.0438260465022019540 },
        { 0.3340656988589361700, 0.0455869393478819300 },
        { 0.3803563188739314500, 0.0469221995404022800 },
        { 0.4277640192086017400, 0.0478193600396374200 },
        { 0.4758461671561308000, 0.0482700442573639060 },
        { 0.5241538328438692000, 0.0482700442573639060 },
        { 0.5722359807913983000, 0.0478193600396374200 },
        { 0.6196436811260685000, 0.0469221995404022800 },
        { 0.6659343011410639000, 0.0455869393478819300 },
        { 0.7106756380653176000, 0.0438260465022019540 },
        { 0.7534499544661146000, 0.0416559621134734200 },
        { 0.7938578786203812000, 0.0390969478935351560 },
        { 0.8315221334651076000, 0.0361728970544242250 },
        { 0.8660910593701449000, 0.0329111113881808760 },
        { 0.8972418979839711000, 0.0293420467392678520 },
        { 0.9246838068662850000, 0.0254990296311881220 },
        { 0.9481605778830261000, 0.0214179490111132130 },
        { 0.9674530379688698000, 0.0171369314565108130 },
        { 0.9823811277937532000, 0.0126960326546312130 },
        { 0.9928057557726342000, 0.0081371973654529830 },
        { 0.9986319309247408000, 0.0035093050047346490 }
    },
    {   // degree 33
        { 0.0012876528767724050, 0.0033031139237944805 },
        { 0.0067721368846787590, 0.0076608507564675170 },
        { 0.0165885451550036300, 0.0119577740508746870 },
        { 0.0306528136944158600, 0.0161501793161645780 },
        { 0.0488416161282831940, 0.0202007706658347030 },
        { 0.0709951736617479600, 0.0240738714093558030 },
        { 0.0969188218629166700, 0.0277354233158316550 },
        { 0.1263847517752189000, 0.0311532412651586740 },
        { 0.1591340200151286000, 0.0342972864093282800 },
        { 0.1948788270818104800, 0.0371399274219770400 },
        { 0.2333050476068262000, 0.0396561823974433000 },
        { 0.2740749913637746700, 0.0418239380335192960 },
        { 0.3168303711259633500, 0.0436241438094220750 },
        { 0.3611954514237515000, 0.0450409793303192200 },
        { 0.4067803505860042000, 0.0460619933216583400 },
        { 0.4531844670726333000, 0.0466782130327979900 },
        { 0.5000000000000000000, 0.0468842230801049050 },
        { 0.5468155329273667000, 0.0466782130327979900 },
        { 0.5932196494139957000, 0.0460619933216583400 },
        { 0.6388045485762486000, 0.0450409793303192200 },
        { 0.6831696288740366000, 0.0436241438094220750 },
        { 0.7259250086362253000, 0.0418239380335192960 },
        { 0.7666949523931739000, 0.0396561823974433000 },
        { 0.8051211729181895000, 0.0371399274219770400 },
        { 0.8408659799848714000, 0.0342972864093282800 },
        { 0.8736152482247811000, 0.0311532412651586740 },
        { 0.9030811781370833000, 0.0277354233158316550 },
        { 0.9290048263382520000, 0.0240738714093558030 },
        { 0.9511583838717168000, 0.0202007706658347030 },
        { 0.9693471863055841000, 0.0161501793161645780 },
        { 0.9834114548449964000, 0.0119577740508746870 },
        { 0.9932278631153213000, 0.0076608507564675170 },
        { 0.9987123471232275000, 0.0033031139237944805 }
    },
    {   // degree 34
        { 0.0012141231045790235, 0.0031145702779550163 },
        { 0.0063860917968452390, 0.0072250813742972740 },
        { 0.0156458687333278500, 0.0112818609927475190 },
        { 0.0289188012974464500, 0.0152456903192228890 },
        { 0.0460951611408377260, 0.0190832968981934530 },
        { 0.0670326808327178000, 0.0227628057616768900 },
        { 0.0915578860495331900, 0.0262537072863390300 },
        { 0.1194675616850635000, 0.0295270679137623270 },
        { 0.1505304433918685500, 0.0325557607770382300 },
        { 0.1844891364597357500, 0.0353146879071278600 },
        { 0.2210622496651266600, 0.0377809873300159000 },
        { 0.2599467274048365000, 0.0399342221698859100 },
        { 0.3008203611206770000, 0.0417565498499227600 },
        { 0.3433444593302683600, 0.0432328698735178350 },
        { 0.3871666541917752600, 0.0443509489178468700 },
        { 0.4319238213704085000, 0.0451015221853203060 },
        { 0.4772450890234487500, 0.0454783701651298900 },
        { 0.5227549109765512000, 0.0454783701651298900 },
        { 0.5680761786295915000, 0.0451015221853203060 },
        { 0.6128333458082247000, 0.0443509489178468700 },
        { 0.6566555406697316000, 0.0432328698735178350 },
        { 0.6991796388793230000, 0.0417565498499227600 },
        { 0.7400532725951635000, 0.0399342221698859100 },
        { 0.7789377503348733000, 0.0377809873300159000 },
        { 0.8155108635402643000, 0.0353146879071278600 },
        { 0.8494695566081314000, 0.0325557607770382300 },
        { 0.8805324383149364000, 0.0295270679137623270 },
        { 0.9084421139504668000, 0.0262537072863390300 },
        { 0.9329673191672823000, 0.0227628057616768900 },
        { 0.9539048388591622000, 0.0190832968981934530 },
        { 0.9710811987025536000, 0.0152456903192228890 },
        { 0.9843541312666721000, 0.0112818609927475190 },
        { 0.9936139082031548000, 0.0072250813742972740 },
        { 0.9987858768954210000, 0.0031145702779550163 }
    },
    {   // degree 35
        { 0.0011467154501998422, 0.0029417167102207750 },
        { 0.0060321177780742200, 0.0068254141741806630 },
        { 0.0147811919803850780, 0.0106614899557418360 },
        { 0.0273274258960863330, 0.0144146300544470660 },
        { 0.0435728693203412100, 0.0180550579317318330 },
        { 0.0633904374873888200, 0.0215542111630850100 },
        { 0.0866250504538873000, 0.0248846852006768400 },
        { 0.1130948738565437100, 0.0280204081061850020 },
        { 0.1425927492216856300, 0.0309368359830401900 },
        { 0.1748878176670548000, 0.0336111426345435300 },
        { 0.2097273276251177500, 0.0360223973862801200 },
        { 0.2468386133792557200, 0.0381517285777211650 },
        { 0.2859312292410929000, 0.0399824711211622100 },
        { 0.3266992227845930000, 0.0415002968644283700 },
        { 0.3688235293953519600, 0.0426933266960496040 },
        { 0.4119744694170052000, 0.0435522234985918700 },
        { 0.4558143283621704000, 0.0440702652151378150 },
        { 0.5000000000000000000, 0.0442433974535522340 },
        { 0.5441856716378296000, 0.0440702652151378150 },
        { 0.5880255305829948000, 0.0435522234985918700 },
        { 0.6311764706046481000, 0.0426933266960496040 },
        { 0.6733007772154069000, 0.0415002968644283700 },
        { 0.7140687707589071000, 0.0399824711211622100 },
        { 0.7531613866207443000, 0.0381517285777211650 },
        { 0.7902726723748823000, 0.0360223973862801200 },
        { 0.8251121823329453000, 0.0336111426345435300 },
        { 0.8574072507783144000, 0.0309368359830401900 },
        { 0.8869051261434563000, 0.0280204081061850020 },
        { 0.9133749495461128000, 0.0248846852006768400 },
        { 0.9366095625126112000, 0.0215542111630850100 },
        { 0.9564271306796588000, 0.0180550579317318330 },
        { 0.9726725741039137000, 0.0144146300544470660 },
        { 0.9852188080196149000, 0.0106614899557418360 },
        { 0.9939678822219258000, 0.0068254141741806630 },
        { 0.9988532845498002000, 0.0029417167102207750 }
    },
    {   // degree 36
        { 0.0010847687579570997, 0.0027828598321238920 },
        { 0.0057067605488938520, 0.0064579736420320520 },
        { 0.0139861544751510030, 0.0100907576488675870 },
        { 0.0258635078002462100, 0.0136493107492841780 },
        { 0.0412511127421704700, 0.0171069053851537400 },
        { 0.0600350995548014600, 0.0204378754618226160 },
        { 0.0820764165037623500, 0.0236175417451330240 },
        { 0.1072118849338967200, 0.0266223569888798400 },
        { 0.1352554142032216800, 0.0294300721226622740 },
        { 0.1659993817072395000, 0.0320198986775077150 },
        { 0.1992161709320097200, 0.0343726619178681500 },
        { 0.2346598570368774200, 0.0364709425028265000 },
        { 0.2720680277832898700, 0.0382992053229353100 },
        { 0.3111637264401554000, 0.0398439144560357800 },
        { 0.3516575023279858700, 0.0410936333521698250 },
        { 0.3932495538415672300, 0.0420391094898308960 },
        { 0.4356319480953076000, 0.0426733428696692500 },
        { 0.4784909007631457000, 0.0429916378351973100 },
        { 0.5215090992368543000, 0.0429916378351973100 },
        { 0.5643680519046924000, 0.0426733428696692500 },
        { 0.6067504461584328000, 0.0420391094898308960 },
        { 0.6483424976720141000, 0.0410936333521698250 },
        { 0.6888362735598446000, 0.0398439144560357800 },
        { 0.7279319722167101000, 0.0382992053229353100 },
        { 0.7653401429631226000, 0.0364709425028265000 },
        { 0.8007838290679903000, 0.0343726619178681500 },
        { 0.8340006182927605000, 0.0320198986775077150 },
        { 0.8647445857967784000, 0.0294300721226622740 },
        { 0.8927881150661032000, 0.0266223569888798400 },
        { 0.9179235834962376000, 0.0236175417451330240 },
        { 0.9399649004451985000, 0.0204378754618226160 },
        { 0.9587488872578296000, 0.0171069053851537400 },
        { 0.9741364921997537000, 0.0136493107492841780 },
        { 0.9860138455248490000, 0.0100907576488675870 },
        { 0.9942932394511061000, 0.0064579736420320520 },
        { 0.9989152312420428000, 0.0027828598321238920 }
    },
    {   // degree 37
        { 0.0010277087610431890, 0.0026365286397505025 },
        { 0.0054070183928404125, 0.0061193900501534376 },
        { 0.0132534849717571010, 0.0095645222445415100 },
        { 0.0245138283689526060, 0.0129430184952796560 },
        { 0.0391092812937681200, 0.0162308199237606000 },
        { 0.0569375189222569600, 0.0194048012509671900 },
        { 0.0778735063297220100, 0.0224426823312185230 },
        { 0.1017703997450488700, 0.0253231488274122800 },
        { 0.1284605830090173600, 0.0280259939991373700 },
        { 0.1577568454345203400, 0.0305322582616129570 },
        { 0.1894536957955377800, 0.0328243614363756400 },
        { 0.2233288040692091300, 0.0348862257778501450 },
        { 0.2591445610983972300, 0.0367033886242440800 },
        { 0.2966497453408369300, 0.0382631037852645300 },
        { 0.3355812850581465000, 0.0395544309187646200 },
        { 0.3756661036043171000, 0.0405683122542324300 },
        { 0.4166230348800740000, 0.0412976361182185500 },
        { 0.4581647955226150000, 0.0417372868129313000 },
        { 0.5000000000000000000, 0.0418841804965693600 },
        { 0.5418352044773850000, 0.0417372868129313000 },
        { 0.5833769651199260000, 0.0412976361182185500 },
        { 0.6243338963956828000, 0.0405683122542324300 },
        { 0.6644187149418534000, 0.0395544309187646200 },
        { 0.7033502546591630000, 0.0382631037852645300 },
        { 0.7408554389016028000, 0.0367033886242440800 },
        { 0.7766711959307908000, 0.0348862257778501450 },
        { 0.8105463042044623000, 0.0328243614363756400 },
        { 0.8422431545654796000, 0.0305322582616129570 },
        { 0.8715394169909827000, 0.0280259939991373700 },
        { 0.8982296002549511000, 0.0253231488274122800 },
        { 0.9221264936702780000, 0.0224426823312185230 },
        { 0.9430624810777430000, 0.0194048012509671900 },
        { 0.9608907187062319000, 0.0162308199237606000 },
        { 0.9754861716310474000, 0.0129430184952796560 },
        { 0.9867465150282428000, 0.0095645222445415100 },
        { 0.9945929816071596000, 0.0061193900501534376 },
        { 0.9989722912389568000, 0.0026365286397505025 }
    },
    {   // degree 38
        { 0.0009750347321562103, 0.0025014403748194664 },
        { 0.0051302728668072280, 0.0058067223582342270 },
        { 0.0125768357049232400, 0.0090782888548067050 },
        { 0.0232668345332351920, 0.0122898698691160030 },
        { 0.0371293339757078340, 0.0154197502725878600 },
        { 0.0540721304976838900, 0.0184470407970124300 },
        { 0.0739824890338189300, 0.0213515792523373500 },
        { 0.0967279161973415600, 0.0241140309303792650 },
        { 0.1221570481230146400, 0.0267160099551660980 },
        { 0.1501006598104078200, 0.0291401995734985770 },
        { 0.1803727920851591600, 0.0313704666960665860 },
        { 0.2127719894760964300, 0.0333919689895701900 },
        { 0.2470826410360344400, 0.0351912535334494700 },
        { 0.2830764152838118000, 0.0367563462923717050 },
        { 0.3205137797602825000, 0.0380768317742232400 },
        { 0.3591455951049174000, 0.0391439223291054900 },
        { 0.3987147730539416500, 0.0399505166217639100 },
        { 0.4389579873310663000, 0.0404912468852985300 },
        { 0.4796074260477109000, 0.0407625146401929000 },
        { 0.5203925739522891000, 0.0407625146401929000 },
        { 0.5610420126689337000, 0.0404912468852985300 },
        { 0.6012852269460583000, 0.0399505166217639100 },
        { 0.6408544048950826000, 0.0391439223291054900 },
        { 0.6794862202397175000, 0.0380768317742232400 },
        { 0.7169235847161882000, 0.0367563462923717050 },
        { 0.7529173589639655000, 0.0351912535334494700 },
        { 0.7872280105239036000, 0.0333919689895701900 },
        { 0.8196272079148408000, 0.0313704666960665860 },
        { 0.8498993401895922000, 0.0291401995734985770 },
        { 0.8778429518769854000, 0.0267160099551660980 },
        { 0.9032720838026584000, 0.0241140309303792650 },
        { 0.9260175109661810000, 0.0213515792523373500 },
        { 0.9459278695023161000, 0.0184470407970124300 },
        { 0.9628706660242922000, 0.0154197502725878600 },
        { 0.9767331654667648000, 0.0122898698691160030 },
        { 0.9874231642950768000, 0.0090782888548067050 },
        { 0.9948697271331928000, 0.0058067223582342270 },
        { 0.9990249652678438000, 0.0025014403748194664 }
    },
    {   // degree 39
        { 0.0009263084667835431, 0.0023764723458164940 },
        { 0.0048742315726569840, 0.0055173944695815830 },
        { 0.0119506453332644540, 0.0086281145468623690 },
        { 0.0221123938376738830, 0.0116846924160892860 },
        { 0.0352954257566309160, 0.0146674779919518760 },
        { 0.0514164403535035700, 0.0175575557490658220 },
        { 0.0703735310000469000, 0.0203366384239668660 },
        { 0.0920468512849284500, 0.0229871505544584630 },
        { 0.1162993785344682600, 0.0254923326460648160 },
        { 0.1429777820527326500, 0.0278363451704581950 },
        { 0.1719133932839945200, 0.0300043680442980960 },
        { 0.2029232725213610000, 0.0319826940693412540 },
        { 0.2358113656697812800, 0.0337588154831157900 },
        { 0.2703697438454320000, 0.0353215029853044750 },
        { 0.3063799180142192700, 0.0366608767071344360 },
        { 0.3436142203759070500, 0.0377684686614181700 },
        { 0.3818372437690821000, 0.0386372762723411100 },
        { 0.4208073300010811000, 0.0392618066436857050 },
        { 0.4602780976956223000, 0.0396381112841843600 },
        { 0.5000000000000000000, 0.0397638110697215500 },
        { 0.5397219023043778000, 0.0396381112841843600 },
        { 0.5791926699989189000, 0.0392618066436857050 },
        { 0.6181627562309179000, 0.0386372762723411100 },
        { 0.6563857796240930000, 0.0377684686614181700 },
        { 0.6936200819857807000, 0.0366608767071344360 },
        { 0.7296302561545680000, 0.0353215029853044750 },
        { 0.7641886343302187000, 0.0337588154831157900 },
        { 0.7970767274786390000, 0.0319826940693412540 },
        { 0.8280866067160055000, 0.0300043680442980960 },
        { 0.8570222179472673000, 0.0278363451704581950 },
        { 0.8837006214655317000, 0.0254923326460648160 },
        { 0.9079531487150716000, 0.0229871505544584630 },
        { 0.9296264689999532000, 0.0203366384239668660 },
        { 0.9485835596464964000, 0.0175575557490658220 },
        { 0.9647045742433691000, 0.0146674779919518760 },
        { 0.9778876061623261000, 0.0116846924160892860 },
        { 0.9880493546667355000, 0.0086281145468623690 },
        { 0.9951257684273430000, 0.0055173944695815830 },
        { 0.9990736915332165000, 0.0023764723458164940 }
    },
    {   // degree 40
        { 0.0008811451447203744, 0.0022606385492650090 },
        { 0.0046368806502714580, 0.0052491422655758044 },
        { 0.0113700250081128500, 0.0082105291909536720 },
        { 0.0210415903931041600, 0.0111229245970833270 },
        { 0.0335935958606617400, 0.0139685034900117640 },
        { 0.0489505965155628300, 0.0167300976412738400 },
        { 0.0670202483938702200, 0.0193910839872361900 },
        { 0.0876938845833441500, 0.0219354540928366620 },
        { 0.1108471742867402900, 0.0243479038175362030 },
        { 0.1363408724050364500, 0.0266139234919685570 },
        { 0.1640216576929102200, 0.0287198845496959460 },
        { 0.1937230551660098500, 0.0306531212464646600 },
        { 0.2252664374524359000, 0.0324020067283007400 },
        { 0.2584620991569106500, 0.0339560229076172000 },
        { 0.2931103978141975000, 0.0353058236956435840 },
        { 0.3290029545871207600, 0.0364432911979022400 },
        { 0.3659239074963731600, 0.0373615845289843400 },
        { 0.4036512096493144500, 0.0380551809503133700 },
        { 0.4419579646623724000, 0.0385199090821241940 },
        { 0.4806137912469745600, 0.0387529739892126660 },
        { 0.5193862087530254000, 0.0387529739892126660 },
        { 0.5580420353376276000, 0.0385199090821241940 },
        { 0.5963487903506856000, 0.0380551809503133700 },
        { 0.6340760925036268000, 0.0373615845289843400 },
        { 0.6709970454128793000, 0.0364432911979022400 },
        { 0.7068896021858024000, 0.0353058236956435840 },
        { 0.7415379008430893000, 0.0339560229076172000 },
        { 0.7747335625475641000, 0.0324020067283007400 },
        { 0.8062769448339902000, 0.0306531212464646600 },
        { 0.8359783423070898000, 0.0287198845496959460 },
        { 0.8636591275949635000, 0.0266139234919685570 },
        { 0.8891528257132597000, 0.0243479038175362030 },
        { 0.9123061154166558000, 0.0219354540928366620 },
        { 0.9329797516061298000, 0.0193910839872361900 },
        { 0.9510494034844372000, 0.0167300976412738400 },
        { 0.9664064041393383000, 0.0139685034900117640 },
        { 0.9789584096068958000, 0.0111229245970833270 },
        { 0.9886299749918872000, 0.0082105291909536720 },
        { 0.9953631193497285000, 0.0052491422655758044 },
        { 0.9991188548552796000, 0.0022606385492650090 }
    },
    {   // degree 41
        { 0.0008392057126142549, 0.0021530701790808960 },
        { 0.0044164451504918320, 0.0049999693869525360 },
        { 0.0108306632194583030, 0.0078224692039094040 },
        { 0.0200465541348268660, 0.0106005316843896040 },
        { 0.0320115062510730740, 0.0133179496035550770 },
        { 0.0466570276209494200, 0.0159591058658496950 },
        { 0.0638992441537792900, 0.0185088583517540100 },
        { 0.0836393997993193400, 0.0209525975979549900 },
        { 0.1057644274762953300, 0.0232763241845073500 },
        { 0.1301475984650368700, 0.0254667271473088600 },
        { 0.1566492489825243600, 0.0275112596212894570 },
        { 0.1851175804639018700, 0.0293982104749361540 },
        { 0.2153895291948920700, 0.0311167712904833100 },
        { 0.2472917004002969700, 0.0326570982267638250 },
        { 0.2806413614742964700, 0.0340103683804385550 },
        { 0.3152474886797592700, 0.0351688303104089050 },
        { 0.3509118613290876000, 0.0361258484305116800 },
        { 0.3874301971832886400, 0.0368759410136119100 },
        { 0.4245933225680039000, 0.0374148115881109500 },
        { 0.4621883705054185000, 0.0377393735463581000 },
        { 0.5000000000000000000, 0.0378477678236493700 },
        { 0.5378116294945815000, 0.0377393735463581000 },
        { 0.5754066774319961000, 0.0374148115881109500 },
        { 0.6125698028167114000, 0.0368759410136119100 },
        { 0.6490881386709124000, 0.0361258484305116800 },
        { 0.6847525113202407000, 0.0351688303104089050 },
        { 0.7193586385257036000, 0.0340103683804385550 },
        { 0.7527082995997030000, 0.0326570982267638250 },
        { 0.7846104708051079000, 0.0311167712904833100 },
        { 0.8148824195360982000, 0.0293982104749361540 },
        { 0.8433507510174756000, 0.0275112596212894570 },
        { 0.8698524015349631000, 0.0254667271473088600 },
        { 0.8942355725237047000, 0.0232763241845073500 },
        { 0.9163606002006807000, 0.0209525975979549900 },
        { 0.9361007558462207000, 0.0185088583517540100 },
        { 0.9533429723790505000, 0.0159591058658496950 },
        { 0.9679884937489269000, 0.0133179496035550770 },
        { 0.9799534458651731000, 0.0106005316843896040 },
        { 0.9891693367805416000, 0.0078224692039094040 },
        { 0.9955835548495082000, 0.0049999693869525360 },
        { 0.9991607942873857000, 0.0021530701790808960 }
    },
    {   // degree 42
        { 0.0008001905049687674, 0.0020529993023234564 },
        { 0.0042113558295695520, 0.0047681101508742040 },
        { 0.0103287459681258850, 0.0074612218486786470 },
        { 0.0191203173308977500, 0.0101139347845261070 },
        { 0.0305382213225059430, 0.0127114797630568130 },
        { 0.0445201375479362700, 0.0152396203498016670 },
        { 0.0609897150939136000, 0.0176845355487960000 },
        { 0.0798570083690915400, 0.0200328675903461430 },
        { 0.1010189733722563000, 0.0222717888859829900 },
        { 0.1243600321552597600, 0.0243890703964017370 },
        { 0.1497527047219143800, 0.0263731478495870740 },
        { 0.1770583055653760500, 0.0282131846790092600 },
        { 0.2061277012574453400, 0.0298991311137934040 },
        { 0.2368021250344038400, 0.0314217790225013700 },
        { 0.2689140439647890000, 0.0327728121824545640 },
        { 0.3022880739785125000, 0.0339448516882610850 },
        { 0.3367419377672942000, 0.0349314962462971900 },
        { 0.3720874603285604400, 0.0357273571325856000 },
        { 0.4081315967175727000, 0.0363280876219021900 },
        { 0.4446774863957400600, 0.0367304067267339100 },
        { 0.4815255284173241000, 0.0369321171160865850 },
        { 0.5184744715826759000, 0.0369321171160865850 },
        { 0.5553225136042599000, 0.0367304067267339100 },
        { 0.5918684032824273000, 0.0363280876219021900 },
        { 0.6279125396714396000, 0.0357273571325856000 },
        { 0.6632580622327058000, 0.0349314962462971900 },
        { 0.6977119260214875000, 0.0339448516882610850 },
        { 0.7310859560352110000, 0.0327728121824545640 },
        { 0.7631978749655961000, 0.0314217790225013700 },
        { 0.7938722987425546000, 0.0298991311137934040 },
        { 0.8229416944346240000, 0.0282131846790092600 },
        { 0.8502472952780856000, 0.0263731478495870740 },
        { 0.8756399678447402000, 0.0243890703964017370 },
        { 0.8989810266277437000, 0.0222717888859829900 },
        { 0.9201429916309085000, 0.0200328675903461430 },
        { 0.9390102849060864000, 0.0176845355487960000 },
        { 0.9554798624520637000, 0.0152396203498016670 },
        { 0.9694617786774941000, 0.0127114797630568130 },
        { 0.9808796826691022000, 0.0101139347845261070 },
        { 0.9896712540318742000, 0.0074612218486786470 },
        { 0.9957886441704304000, 0.0047681101508742040 },
        { 0.9991998094950312000, 0.0020529993023234564 }
    },
    {   // degree 43
        { 0.0007638338787461785, 0.0019597451269240088 },
        { 0.0040202212033779160, 0.0045519983187005605 },
        { 0.0098608895098722950, 0.0071243782157880100 },
        { 0.0182566934929599970, 0.0096599507118419350 },
        { 0.0291640215761810870, 0.0121452283069195220 },
        { 0.0425260463969306400, 0.0145672066307492520 },
        { 0.0582731173906915760, 0.0169132460434300230 },
        { 0.0763231418953424500, 0.0191711110970661340 },
        { 0.0965820179315307000, 0.0213290285989910340 },
        { 0.1189441264025224400, 0.0233757473771732200 },
        { 0.1432928823655214600, 0.0253005963921949070 },
        { 0.1695013431242509000, 0.0270935401594407550 },
        { 0.1974328701801995000, 0.0287452309784551900 },
        { 0.2269418416699576200, 0.0302470576249954870 },
        { 0.2578744116071326500, 0.0315911902246979900 },
        { 0.2900693119853653400, 0.0327706210631612500 },
        { 0.3233586935678481000, 0.0337792011146824900 },
        { 0.3575690009835431600, 0.0346116720968282300 },
        { 0.3925218775697409000, 0.0352636938825423800 },
        { 0.4280350952446433400, 0.0357318671262569800 },
        { 0.4639235045627068700, 0.0360137509857108600 },
        { 0.5000000000000000000, 0.0361078758468993800 },
        { 0.5360764954372931000, 0.0360137509857108600 },
        { 0.5719649047553567000, 0.0357318671262569800 },
        { 0.6074781224302591000, 0.0352636938825423800 },
        { 0.6424309990164568000, 0.0346116720968282300 },
        { 0.6766413064321519000, 0.0337792011146824900 },
        { 0.7099306880146347000, 0.0327706210631612500 },
        { 0.7421255883928674000, 0.0315911902246979900 },
        { 0.7730581583300424000, 0.0302470576249954870 },
        { 0.8025671298198005000, 0.0287452309784551900 },
        { 0.8304986568757491000, 0.0270935401594407550 },
        { 0.8567071176344785000, 0.0253005963921949070 },
        { 0.8810558735974776000, 0.0233757473771732200 },
        { 0.9034179820684693000, 0.0213290285989910340 },
        { 0.9236768581046575000, 0.0191711110970661340 },
        { 0.9417268826093084000, 0.0169132460434300230 },
        { 0.9574739536030694000, 0.0145672066307492520 },
        { 0.9708359784238190000, 0.0121452283069195220 },
        { 0.9817433065070400000, 0.0096599507118419350 },
        { 0.9901391104901277000, 0.0071243782157880100 },
        { 0.9959797787966220000, 0.0045519983187005605 },
        { 0.9992361661212539000, 0.0019597451269240088 }
    },
    {   // degree 44
        { 0.0007298996816129111, 0.0018727024015582454 },
        { 0.0038418039307420715, 0.0043502406837618380 },
        { 0.0094240834610430090, 0.0068097933777896920 },
        { 0.0174501747887534360, 0.0092357408684074930 },
        { 0.0278802454409029500, 0.0116157409510096140 },
        { 0.0406623700079121200, 0.0139378914106404840 },
        { 0.0557328808569784200, 0.0161906114060349670 },
        { 0.0730167024976448000, 0.0183626739069043800 },
        { 0.0924277301774325000, 0.0204432561551730270 },
        { 0.1138692603756220600, 0.0224219920409850260 },
        { 0.1372344731696415000, 0.0242890232241759030 },
        { 0.1624069646669388200, 0.0260350480458521640 },
        { 0.1892613270482120800, 0.0276513677818639500 },
        { 0.2176637734072646200, 0.0291299299387977050 },
        { 0.2474728043058988500, 0.0304633683507809600 },
        { 0.2785399127372943000, 0.0316450398666018040 },
        { 0.3107103239926464000, 0.0326690574395906360 },
        { 0.3438237667486071000, 0.0335303194531467400 },
        { 0.3777152715358993400, 0.0342245351346832300 },
        { 0.4122159926122416000, 0.0347482459307861950 },
        { 0.4471540491456733600, 0.0350988427367790200 },
        { 0.4823553815179323400, 0.0352745788946769300 },
        { 0.5176446184820677000, 0.0352745788946769300 },
        { 0.5528459508543266000, 0.0350988427367790200 },
        { 0.5877840073877584000, 0.0347482459307861950 },
        { 0.6222847284641007000, 0.0342245351346832300 },
        { 0.6561762332513930000, 0.0335303194531467400 },
        { 0.6892896760073536000, 0.0326690574395906360 },
        { 0.7214600872627057000, 0.0316450398666018040 },
        { 0.7525271956941011000, 0.0304633683507809600 },
        { 0.7823362265927354000, 0.0291299299387977050 },
        { 0.8107386729517879000, 0.0276513677818639500 },
        { 0.8375930353330612000, 0.0260350480458521640 },
        { 0.8627655268303585000, 0.0242890232241759030 },
        { 0.8861307396243779000, 0.0224219920409850260 },
        { 0.9075722698225674000, 0.0204432561551730270 },
        { 0.9269832975023552000, 0.0183626739069043800 },
        { 0.9442671191430216000, 0.0161906114060349670 },
        { 0.9593376299920879000, 0.0139378914106404840 },
        { 0.9721197545590970000, 0.0116157409510096140 },
        { 0.9825498252112466000, 0.0092357408684074930 },
        { 0.9905759165389569000, 0.0068097933777896920 },
        { 0.9961581960692579000, 0.0043502406837618380 },
        { 0.9992701003183870000, 0.0018727024015582454 }
    },
    {   // degree 45
        { 0.0006981774090316639, 0.0017913315776405363 },
        { 0.0036750007763980963, 0.0041615946481088650 },
        { 0.0090156424827296800, 0.0065155524957913906 },
        { 0.0166958448015527300, 0.0088387676289689320 },
        { 0.0266791545021854980, 0.0111199237752897270 },
        { 0.0389180316404997840, 0.0133481069837888460 },
        { 0.0533541641233791200, 0.0155126874672576590 },
        { 0.0699187620196679000, 0.0176033461008046500 },
        { 0.0885328897489567900, 0.0196101183646512100 },
        { 0.1091078437030468300, 0.0215234403545823200 },
        { 0.1315455755272548200, 0.0233341938591866830 },
        { 0.1557391596143997000, 0.0250337496189760660 },
        { 0.1815733027733883500, 0.0266140083656346400 },
        { 0.2089248937153234000, 0.0280674393798933280 },
        { 0.2376635897685419600, 0.0293871163594209250 },
        { 0.2676524380401824600, 0.0305667504155333400 },
        { 0.2987485280707290500, 0.0316007200369101000 },
        { 0.3308036728746989000, 0.0324840978753618140 },
        { 0.3636651151238112000, 0.0332126742249213200 },
        { 0.3971762551083681000, 0.0337829770818038900 },
        { 0.4311773970083735000, 0.0341922886893349400 },
        { 0.4655065099184279000, 0.0344386584888307700 },
        { 0.5000000000000000000, 0.0345209124146161100 },
        { 0.5344934900815721000, 0.0344386584888307700 },
        { 0.5688226029916266000, 0.0341922886893349400 },
        { 0.6028237448916318000, 0.0337829770818038900 },
        { 0.6363348848761887000, 0.0332126742249213200 },
        { 0.6691963271253011000, 0.0324840978753618140 },
        { 0.7012514719292710000, 0.0316007200369101000 },
        { 0.7323475619598175000, 0.0305667504155333400 },
        { 0.7623364102314580000, 0.0293871163594209250 },
        { 0.7910751062846766000, 0.0280674393798933280 },
        { 0.8184266972266117000, 0.0266140083656346400 },
        { 0.8442608403856002000, 0.0250337496189760660 },
        { 0.8684544244727452000, 0.0233341938591866830 },
        { 0.8908921562969532000, 0.0215234403545823200 },
        { 0.9114671102510432000, 0.0196101183646512100 },
        { 0.9300812379803320000, 0.0176033461008046500 },
        { 0.9466458358766209000, 0.0155126874672576590 },
        { 0.9610819683595002000, 0.0133481069837888460 },
        { 0.9733208454978145000, 0.0111199237752897270 },
        { 0.9833041551984473000, 0.0088387676289689320 },
        { 0.9909843575172703000, 0.0065155524957913906 },
        { 0.9963249992236018000, 0.0041615946481088650 },
        { 0.9993018225909683000, 0.0017913315776405363 }
    },
    {   // degree 46
        { 0.0006684789330910212, 0.0017151504340545728 },
        { 0.0035188255469128515, 0.0039849491148622460 },
        { 0.0086331650979165620, 0.0062399418854943920 },
        { 0.0159893040730040300, 0.0084667570039181970 },
        { 0.0255538182769551300, 0.0106549993770682410 },
        { 0.0372831005966229900, 0.0127946431985648990 },
        { 0.0511236442330290100, 0.0148759147761012840 },
        { 0.0670123025665709800, 0.0168893139995534000 },
        { 0.0848765814669669700, 0.0188256526786929600 },
        { 0.1046349714623628900, 0.0206760950548393750 },
        { 0.1261973201921670000, 0.0224321976386590260 },
        { 0.1494652439897971600, 0.0240859475508560930 },
        { 0.1743325768990011700, 0.0256297990035714120 },
        { 0.2006858551436424000, 0.0270567076929282660 },
        { 0.2284048348690986800, 0.0283601629219955470 },
        { 0.2573630408059176500, 0.0295342172977730750 },
        { 0.2874283433585858000, 0.0305735138623251630 },
        { 0.3184635614895021700, 0.0314733105321972140 },
        { 0.3503270886490650000, 0.0322295017335694600 },
        { 0.3828735388968651500, 0.0328386371338905600 },
        { 0.4159544102664482500, 0.0332979373842273800 },
        { 0.4494187623472079000, 0.0336053068003390400 },
        { 0.4831139049919740000, 0.0337593429245181600 },
        { 0.5168860950080261000, 0.0337593429245181600 },
        { 0.5505812376527921000, 0.0336053068003390400 },
        { 0.5840455897335518000, 0.0332979373842273800 },
        { 0.6171264611031348000, 0.0328386371338905600 },
        { 0.6496729113509350000, 0.0322295017335694600 },
        { 0.6815364385104978000, 0.0314733105321972140 },
        { 0.7125716566414142000, 0.0305735138623251630 },
        { 0.7426369591940823000, 0.0295342172977730750 },
        { 0.7715951651309013000, 0.0283601629219955470 },
        { 0.7993141448563577000, 0.0270567076929282660 },
        { 0.8256674231009988000, 0.0256297990035714120 },
        { 0.8505347560102028000, 0.0240859475508560930 },
        { 0.8738026798078330000, 0.0224321976386590260 },
        { 0.8953650285376371000, 0.0206760950548393750 },
        { 0.9151234185330330000, 0.0188256526786929600 },
        { 0.9329876974334290000, 0.0168893139995534000 },
        { 0.9488763557669710000, 0.0148759147761012840 },
        { 0.9627168994033770000, 0.0127946431985648990 },
        { 0.9744461817230449000, 0.0106549993770682410 },
        { 0.9840106959269960000, 0.0084667570039181970 },
        { 0.9913668349020834000, 0.0062399418854943920 },
        { 0.9964811744530871000, 0.0039849491148622460 },
        { 0.9993315210669089000, 0.0017151504340545728 }
    },
    {   // degree 47
        { 0.0006406357078939662, 0.0016437269212656535 },
        { 0.0033723945061157057, 0.0038193081479241655 },
        { 0.0082744984641881510, 0.0059814242321562450 },
        { 0.0153266063367177850, 0.0081176665732166030 },
        { 0.0244980153711457650, 0.0102184690738340060 },
        { 0.0357486534938196700, 0.0122746058298293620 },
        { 0.0490293352807373300, 0.0142770753503216760 },
        { 0.0642819921015518300, 0.0162171177575923220 },
        { 0.0814399300500489600, 0.0180862482920874820 },
        { 0.1004281229161290100, 0.0198762930612653640 },
        { 0.1211635407772807000, 0.0215794243242397530 },
        { 0.1435555132954678400, 0.0231881945432528750 },
        { 0.1675061263048336400, 0.0246955688736805200 },
        { 0.1929106500218131800, 0.0260949558900284320 },
        { 0.2196579970326679200, 0.0273802363907650540 },
        { 0.2476312080682110400, 0.0285457901466156620 },
        { 0.2767079634475721500, 0.0295865204711693600 },
        { 0.3067611179576664000, 0.0304978765043697440 },
        { 0.3376592568311320700, 0.0312758731104607100 },
        { 0.3692672703925127000, 0.0319171083028584460 },
        { 0.4014469448604441000, 0.0324187781194728000 },
        { 0.4340575667227425400, 0.0327786888832747900 },
        { 0.4669565380418221300, 0.0329952667944051700 },
        { 0.5000000000000000000, 0.0330675648118276200 },
        { 0.5330434619581779000, 0.0329952667944051700 },
        { 0.5659424332772575000, 0.0327786888832747900 },
        { 0.5985530551395559000, 0.0324187781194728000 },
        { 0.6307327296074873000, 0.0319171083028584460 },
        { 0.6623407431688679000, 0.0312758731104607100 },
        { 0.6932388820423336000, 0.0304978765043697440 },
        { 0.7232920365524278000, 0.0295865204711693600 },
        { 0.7523687919317890000, 0.0285457901466156620 },
        { 0.7803420029673320000, 0.0273802363907650540 },
        { 0.8070893499781868000, 0.0260949558900284320 },
        { 0.8324938736951664000, 0.0246955688736805200 },
        { 0.8564444867045322000, 0.0231881945432528750 },
        { 0.8788364592227194000, 0.0215794243242397530 },
        { 0.8995718770838710000, 0.0198762930612653640 },
        { 0.9185600699499510000, 0.0180862482920874820 },
        { 0.9357180078984482000, 0.0162171177575923220 },
        { 0.9509706647192626000, 0.0142770753503216760 },
        { 0.9642513465061804000, 0.0122746058298293620 },
        { 0.9755019846288542000, 0.0102184690738340060 },
        { 0.9846733936632822000, 0.0081176665732166030 },
        { 0.9917255015358118000, 0.0059814242321562450 },
        { 0.9966276054938843000, 0.0038193081479241655 },
        { 0.9993593642921060000, 0.0016437269212656535 }
    },
    {   // degree 48
        { 0.0006144963737869658, 0.0015766730261545898 },
        { 0.0032349138668246180, 0.0036637769506382460 },
        { 0.0079377081385865740, 0.0057386172896174870 },
        { 0.0147042037268763640, 0.0077896578614714640 },
        { 0.0235061484197845450, 0.0098080802286776480 },
        { 0.0343066546467228340, 0.0117853804196620460 },
        { 0.0470604316422151840, 0.0137132548541784410 },
        { 0.0617139898628760700, 0.0155836139163991700 },
        { 0.0782058691878032600, 0.0173886112823853300 },
        { 0.0964668979852786900, 0.0191206755329153370 },
        { 0.1164204837421298200, 0.0207725414717322770 },
        { 0.1379829345380926800, 0.0223372804283470500 },
        { 0.1610638101836680500, 0.0238083292462451420 },
        { 0.1855663016117432000, 0.0251795177769271400 },
        { 0.2113876369580136600, 0.0264450947425967430 },
        { 0.2384195126388835000, 0.0275997518499920270 },
        { 0.2665485476245208000, 0.0286386460502014650 },
        { 0.2956567590046416000, 0.0295574198491977400 },
        { 0.3256220568539196500, 0.0303522195829467900 },
        { 0.3563187563222722000, 0.0310197115799462320 },
        { 0.3876181048026554600, 0.0315570961431268900 },
        { 0.4193888219655541600, 0.0319621192923239750 },
        { 0.4514976503952687000, 0.0322330822179749200 },
        { 0.4838099145185653000, 0.0323688484063418400 },
        { 0.5161900854814346000, 0.0323688484063418400 },
        { 0.5485023496047313000, 0.0322330822179749200 },
        { 0.5806111780344458000, 0.0319621192923239750 },
        { 0.6123818951973445000, 0.0315570961431268900 },
        { 0.6436812436777277000, 0.0310197115799462320 },
        { 0.6743779431460803000, 0.0303522195829467900 },
        { 0.7043432409953584000, 0.0295574198491977400 },
        { 0.7334514523754792000, 0.0286386460502014650 },
        { 0.7615804873611165000, 0.0275997518499920270 },
        { 0.7886123630419863000, 0.0264450947425967430 },
        { 0.8144336983882567000, 0.0251795177769271400 },
        { 0.8389361898163319000, 0.0238083292462451420 },
        { 0.8620170654619073000, 0.0223372804283470500 },
        { 0.8835795162578701000, 0.0207725414717322770 },
        { 0.9035331020147213000, 0.0191206755329153370 },
        { 0.9217941308121967000, 0.0173886112823853300 },
        { 0.9382860101371240000, 0.0155836139163991700 },
        { 0.9529395683577848000, 0.0137132548541784410 },
        { 0.9656933453532772000, 0.0117853804196620460 },
        { 0.9764938515802155000, 0.0098080802286776480 },
        { 0.9852957962731237000, 0.0077896578614714640 },
        { 0.9920622918614135000, 0.0057386172896174870 },
        { 0.9967650861331754000, 0.0036637769506382460 },
        { 0.9993855036262130000, 0.0015766730261545898 }
    },
    {   // degree 49
        { 0.0005899246966823424, 0.0015136394944634147 },
        { 0.0031056690279160915, 0.0035175497950435350 },
        { 0.0076210520428934840, 0.0055102755157963590 },
        { 0.0141188995492222970, 0.0074810724678125410 },
        { 0.0225731706629314080, 0.0094217979265449840 },
        { 0.0329498526220949300, 0.0113246007937232370 },
        { 0.0452071720859633650, 0.0131818094635330640 },
        { 0.0592957772134955500, 0.0149859423102918900 },
        { 0.0751589400779171200, 0.0167297333958108880 },
        { 0.0927327863200723100, 0.0184061604815002540 },
        { 0.1119465528272766700, 0.0200084728831863600 },
        { 0.1327228728812986400, 0.0215302184906296620 },
        { 0.1549780877874339400, 0.0229652696777977900 },
        { 0.1786225837903811500, 0.0243078479439139700 },
        { 0.2035611529455496600, 0.0255525471650722080 },
        { 0.2296933765041369600, 0.0266943553541293600 },
        { 0.2569140292737539500, 0.0277286748374016600 },
        { 0.2851135033292117000, 0.0286513407650935800 },
        { 0.3141782493688575000, 0.0294586378800134950 },
        { 0.3439912339401256500, 0.0301473154765759200 },
        { 0.3744324106937113600, 0.0307146004895963230 },
        { 0.4053792037690932000, 0.0311582086600284860 },
        { 0.4367070013651640000, 0.0314763537325977100 },
        { 0.4682896575086566000, 0.0316677546482457340 },
        { 0.5000000000000000000, 0.0317316407023951300 },
        { 0.5317103424913434000, 0.0316677546482457340 },
        { 0.5632929986348361000, 0.0314763537325977100 },
        { 0.5946207962309068000, 0.0311582086600284860 },
        { 0.6255675893062886000, 0.0307146004895963230 },
        { 0.6560087660598743000, 0.0301473154765759200 },
        { 0.6858217506311425000, 0.0294586378800134950 },
        { 0.7148864966707883000, 0.0286513407650935800 },
        { 0.7430859707262460000, 0.0277286748374016600 },
        { 0.7703066234958631000, 0.0266943553541293600 },
        { 0.7964388470544503000, 0.0255525471650722080 },
        { 0.8213774162096188000, 0.0243078479439139700 },
        { 0.8450219122125661000, 0.0229652696777977900 },
        { 0.8672771271187014000, 0.0215302184906296620 },
        { 0.8880534471727233000, 0.0200084728831863600 },
        { 0.9072672136799277000, 0.0184061604815002540 },
        { 0.9248410599220829000, 0.0167297333958108880 },
        { 0.9407042227865045000, 0.0149859423102918900 },
        { 0.9547928279140366000, 0.0131818094635330640 },
        { 0.9670501473779051000, 0.0113246007937232370 },
        { 0.9774268293370686000, 0.0094217979265449840 },
        { 0.9858811004507777000, 0.0074810724678125410 },
        { 0.9923789479571066000, 0.0055102755157963590 },
        { 0.9968943309720839000, 0.0035175497950435350 },
        { 0.9994100753033177000, 0.0015136394944634147 }
    },
    {   // degree 50
        { 0.0005667977899644905, 0.0014543112765789342 },
        { 0.0029840152839546440, 0.0033798995978727526 },
        { 0.0073229579759970800, 0.0052952741918258350 },
        { 0.0135678074466539790, 0.0071904113807428550 },
        { 0.0216945223785960370, 0.0090577803567447840 },
        { 0.0316716905275610250, 0.0108901215850622910 },
        { 0.0434607216721040750, 0.0126803367850062950 },
        { 0.0570160102381934700, 0.0144214967902674620 },
        { 0.0722851152850269600, 0.0161068641117889480 },
        { 0.0892089645703320000, 0.0177299178075730130 },
        { 0.1077220835498004000, 0.0192843783062939220 },
        { 0.1277528488869657000, 0.0207642315450737000 },
        { 0.1492237656465889000, 0.0221637521694015500 },
        { 0.1720517671572803200, 0.0234775256519741330 },
        { 0.1961485364075249000, 0.0247004692247330680 },
        { 0.2214208477426750000, 0.0258278515347904600 },
        { 0.2477709275462679000, 0.0268553109444979600 },
        { 0.2750968325129806000, 0.0277788724031061400 },
        { 0.3032928440512174000, 0.0285949628238640760 },
        { 0.3322498772902813000, 0.0293004249066111080 },
        { 0.3618559031102340000, 0.0298925293521326120 },
        { 0.3919963815619791300, 0.0303689854208849560 },
        { 0.4225547050009270700, 0.0307279497951582040 },
        { 0.4534126492199569400, 0.0309680337103414900 },
        { 0.4844508308364055500, 0.0310883083276735000 },
        { 0.5155491691635944000, 0.0310883083276735000 },
        { 0.5465873507800431000, 0.0309680337103414900 },
        { 0.5774452949990729000, 0.0307279497951582040 },
        { 0.6080036184380209000, 0.0303689854208849560 },
        { 0.6381440968897660000, 0.0298925293521326120 },
        { 0.6677501227097187000, 0.0293004249066111080 },
        { 0.6967071559487825000, 0.0285949628238640760 },
        { 0.7249031674870194000, 0.0277788724031061400 },
        { 0.7522290724537322000, 0.0268553109444979600 },
        { 0.7785791522573250000, 0.0258278515347904600 },
        { 0.8038514635924752000, 0.0247004692247330680 },
        { 0.8279482328427197000, 0.0234775256519741330 },
        { 0.8507762343534111000, 0.0221637521694015500 },
        { 0.8722471511130343000, 0.0207642315450737000 },
        { 0.8922779164501996000, 0.0192843783062939220 },
        { 0.9107910354296680000, 0.0177299178075730130 },
        { 0.9277148847149730000, 0.0161068641117889480 },
        { 0.9429839897618065000, 0.0144214967902674620 },
        { 0.9565392783278959000, 0.0126803367850062950 },
        { 0.9683283094724390000, 0.0108901215850622910 },
        { 0.9783054776214040000, 0.0090577803567447840 },
        { 0.9864321925533460000, 0.0071904113807428550 },
        { 0.9926770420240030000, 0.0052952741918258350 },
        { 0.9970159847160454000, 0.0033798995978727526 },
        { 0.9994332022100355000, 0.0014543112765789342 }
    }
    };


    const std::vector<std::vector<std::array<double, 3>>> IntegrationPointUtilities::s_gauss_triangle = {
    {   // degree 1
        { 0.33333333333333, 0.33333333333333, 1.0000000000000000000 }
    },
    {   // degree 2
        { 0.16666666666667, 0.16666666666667, 0.33333333333333 },
        { 0.16666666666667, 0.66666666666667, 0.33333333333333 },
        { 0.66666666666667, 0.16666666666667, 0.33333333333333 }
    },
    {   // degree 3
        {0.44594849091597, 0.44594849091597, 0.22338158967801},
        {0.44594849091597, 0.10810301816807, 0.22338158967801},
        {0.10810301816807, 0.44594849091597, 0.22338158967801},
        {0.09157621350977, 0.09157621350977, 0.10995174365532},
        {0.09157621350977, 0.81684757298046, 0.10995174365532},
        {0.81684757298046, 0.09157621350977, 0.10995174365532}
    },
    {   // degree 4
        {0.33333333333333, 0.33333333333333, 0.22500000000000},
        {0.47014206410511, 0.47014206410511, 0.13239415278851},
        {0.47014206410511, 0.05971587178977, 0.13239415278851},
        {0.05971587178977, 0.47014206410511, 0.13239415278851},
        {0.10128650732346, 0.10128650732346, 0.12593918054483},
        {0.10128650732346, 0.79742698535309, 0.12593918054483},
        {0.79742698535309, 0.10128650732346, 0.12593918054483}
    },
    {   // degree 5
        {0.24928674517091, 0.24928674517091, 0.11678627572638},
        {0.24928674517091, 0.50142650965818, 0.11678627572638},
        {0.50142650965818, 0.24928674517091, 0.11678627572638},
        {0.06308901449150, 0.06308901449150, 0.05084490637021},
        {0.06308901449150, 0.87382197101700, 0.05084490637021},
        {0.87382197101700, 0.06308901449150, 0.05084490637021},
        {0.31035245103378, 0.63650249912140, 0.08285107561837},
        {0.63650249912140, 0.05314504984482, 0.08285107561837},
        {0.05314504984482, 0.31035245103378, 0.08285107561837},
        {0.63650249912140, 0.31035245103378, 0.08285107561837},
        {0.31035245103378, 0.05314504984482, 0.08285107561837},
        {0.05314504984482, 0.63650249912140, 0.08285107561837}
    },
    {   // degree 6
        {0.33333333333333, 0.33333333333333,-0.14957004446768},
        {0.26034596607904, 0.26034596607904, 0.17561525743321},
        {0.26034596607904, 0.47930806784192, 0.17561525743321},
        {0.47930806784192, 0.26034596607904, 0.17561525743321},
        {0.06513010290222, 0.06513010290222, 0.05334723560884},
        {0.06513010290222, 0.86973979419557, 0.05334723560884},
        {0.86973979419557, 0.06513010290222, 0.05334723560884},
        {0.31286549600487, 0.63844418856981, 0.07711376089026},
        {0.63844418856981, 0.04869031542532, 0.07711376089026},
        {0.04869031542532, 0.31286549600487, 0.07711376089026},
        {0.63844418856981, 0.31286549600487, 0.07711376089026},
        {0.31286549600487, 0.04869031542532, 0.07711376089026},
        {0.04869031542532, 0.63844418856981, 0.07711376089026}
    },
    {   // degree 7
        {0.33333333333333, 0.33333333333333, 0.14431560767779},
        {0.45929258829272, 0.45929258829272, 0.09509163426728},
        {0.45929258829272, 0.08141482341455, 0.09509163426728},
        {0.08141482341455, 0.45929258829272, 0.09509163426728},
        {0.17056930775176, 0.17056930775176, 0.10321737053472},
        {0.17056930775176, 0.65886138449648, 0.10321737053472},
        {0.65886138449648, 0.17056930775176, 0.10321737053472},
        {0.05054722831703, 0.05054722831703, 0.03245849762320},
        {0.05054722831703, 0.89890554336594, 0.03245849762320},
        {0.89890554336594, 0.05054722831703, 0.03245849762320},
        {0.26311282963464, 0.72849239295540, 0.02723031417443},
        {0.72849239295540, 0.00839477740996, 0.02723031417443},
        {0.00839477740996, 0.26311282963464, 0.02723031417443},
        {0.72849239295540, 0.26311282963464, 0.02723031417443},
        {0.26311282963464, 0.00839477740996, 0.02723031417443},
        {0.00839477740996, 0.72849239295540, 0.02723031417443}
    },
    {   // degree 8
        {0.33333333333333, 0.33333333333333, 0.09713579628280},
        {0.48968251919874, 0.48968251919874, 0.03133470022714},
        {0.48968251919874, 0.02063496160252, 0.03133470022714},
        {0.02063496160252, 0.48968251919874, 0.03133470022714},
        {0.43708959149294, 0.43708959149294, 0.07782754100477},
        {0.43708959149294, 0.12582081701413, 0.07782754100477},
        {0.12582081701413, 0.43708959149294, 0.07782754100477},
        {0.18820353561903, 0.18820353561903, 0.07964773892721},
        {0.18820353561903, 0.62359292876193, 0.07964773892721},
        {0.62359292876193, 0.18820353561903, 0.07964773892721},
        {0.04472951339445, 0.04472951339445, 0.02557767565870},
        {0.04472951339445, 0.91054097321109, 0.02557767565870},
        {0.91054097321109, 0.04472951339445, 0.02557767565870},
        {0.22196298916077, 0.74119859878450, 0.04328353937729},
        {0.74119859878450, 0.03683841205474, 0.04328353937729},
        {0.03683841205474, 0.22196298916077, 0.04328353937729},
        {0.74119859878450, 0.22196298916077, 0.04328353937729},
        {0.22196298916077, 0.03683841205474, 0.04328353937729},
        {0.03683841205474, 0.74119859878450, 0.04328353937729}
    },
    {   // degree 9
        {0.33333333333333, 0.33333333333333, 0.09081799038275},
        {0.48557763338366, 0.48557763338366, 0.03672595775647},
        {0.48557763338366, 0.02884473323269, 0.03672595775647},
        {0.02884473323269, 0.48557763338366, 0.03672595775647},
        {0.10948157548504, 0.10948157548504, 0.04532105943553},
        {0.10948157548504, 0.78103684902993, 0.04532105943553},
        {0.78103684902993, 0.10948157548504, 0.04532105943553},
        {0.30793983876412, 0.55035294182100, 0.07275791684542},
        {0.55035294182100, 0.14170721941488, 0.07275791684542},
        {0.14170721941488, 0.30793983876412, 0.07275791684542},
        {0.55035294182100, 0.30793983876412, 0.07275791684542},
        {0.30793983876412, 0.14170721941488, 0.07275791684542},
        {0.14170721941488, 0.55035294182100, 0.07275791684542},
        {0.24667256063990, 0.72832390459741, 0.02832724253106},
        {0.72832390459741, 0.02500353476269, 0.02832724253106},
        {0.02500353476269, 0.24667256063990, 0.02832724253106},
        {0.72832390459741, 0.24667256063990, 0.02832724253106},
        {0.24667256063990, 0.02500353476269, 0.02832724253106},
        {0.02500353476269, 0.72832390459741, 0.02832724253106},
        {0.06680325101220, 0.92365593358750, 0.00942166696373},
        {0.92365593358750, 0.00954081540030, 0.00942166696373},
        {0.00954081540030, 0.06680325101220, 0.00942166696373},
        {0.92365593358750, 0.06680325101220, 0.00942166696373},
        {0.06680325101220, 0.00954081540030, 0.00942166696373},
        {0.00954081540030, 0.92365593358750, 0.00942166696373}
    },
    {   // degree 10
        {0.48821738977381, 0.48821738977381, 0.02573106644045},
        {0.48821738977381, 0.02356522045239, 0.02573106644045},
        {0.02356522045239, 0.48821738977381, 0.02573106644045},
        {0.43972439229446, 0.43972439229446, 0.04369254453804},
        {0.43972439229446, 0.12055121541108, 0.04369254453804},
        {0.12055121541108, 0.43972439229446, 0.04369254453804},
        {0.27121038501212, 0.27121038501212, 0.06285822421789},
        {0.27121038501212, 0.45757922997577, 0.06285822421789},
        {0.45757922997577, 0.27121038501212, 0.06285822421789},
        {0.12757614554159, 0.12757614554159, 0.03479611293071},
        {0.12757614554159, 0.74484770891683, 0.03479611293071},
        {0.74484770891683, 0.12757614554159, 0.03479611293071},
        {0.02131735045321, 0.02131735045321, 0.00616626105156},
        {0.02131735045321, 0.95736529909358, 0.00616626105156},
        {0.95736529909358, 0.02131735045321, 0.00616626105156},
        {0.27571326968551, 0.60894323577979, 0.04037155776638},
        {0.60894323577979, 0.11534349453470, 0.04037155776638},
        {0.11534349453470, 0.27571326968551, 0.04037155776638},
        {0.60894323577979, 0.27571326968551, 0.04037155776638},
        {0.27571326968551, 0.11534349453470, 0.04037155776638},
        {0.11534349453470, 0.60894323577979, 0.04037155776638},
        {0.28132558098994, 0.69583608678780, 0.02235677320230},
        {0.69583608678780, 0.02283833222226, 0.02235677320230},
        {0.02283833222226, 0.28132558098994, 0.02235677320230},
        {0.69583608678780, 0.28132558098994, 0.02235677320230},
        {0.28132558098994, 0.02283833222226, 0.02235677320230},
        {0.02283833222226, 0.69583608678780, 0.02235677320230},
        {0.11625191590760, 0.85801403354407, 0.01731623110866},
        {0.85801403354407, 0.02573405054833, 0.01731623110866},
        {0.02573405054833, 0.11625191590760, 0.01731623110866},
        {0.85801403354407, 0.11625191590760, 0.01731623110866},
        {0.11625191590760, 0.02573405054833, 0.01731623110866},
        {0.02573405054833, 0.85801403354407, 0.01731623110866}
    }
    };
}
